unit uDadosRelat;

interface

uses
  System.SysUtils, System.Classes, Data.FMTBcd, Data.DB, Data.SqlExpr,
  Datasnap.DBClient, Datasnap.Provider;

type
  TdmDadosRelat = class(TDataModule)
    sqlFaturamento: TSQLDataSet;
    cdsCabecalho: TClientDataSet;
    cdsCabecalhoSubTitulo: TStringField;
    sqlItensVendidos: TSQLDataSet;
    sqlFaturamentonfsdtemis: TDateField;
    sqlFaturamentovldesctip0: TFMTBCDField;
    sqlFaturamentovltotnftip0: TFMTBCDField;
    sqlFaturamentovldesctip1: TFMTBCDField;
    sqlFaturamentovltotnftip1: TFMTBCDField;
    sqlFaturamentonfsvldesc: TFMTBCDField;
    sqlFaturamentonfsvltotnf: TFMTBCDField;
    sqlItensVendidosprocod: TIntegerField;
    sqlItensVendidosprodescr: TStringField;
    sqlItensVendidosqtdetot: TFMTBCDField;
    sqlItensVendidosvltot: TFMTBCDField;
    sqlEstoque: TSQLDataSet;
    sqlEstoqueprocod: TIntegerField;
    sqlEstoqueprodescr: TStringField;
    sqlEstoqueproqtdeest: TIntegerField;
    sqlEstoquevltotestcompra: TFMTBCDField;
    sqlEstoquevltotestvenda: TFMTBCDField;
    sqlFaturamentoItem: TSQLDataSet;
    dspFaturamentoItem: TDataSetProvider;
    cdsFaturamentoItem: TClientDataSet;
    cdsFaturamentoItemprocod: TIntegerField;
    cdsFaturamentoItemprodescr: TStringField;
    cdsFaturamentoItemqtde: TFMTBCDField;
    cdsFaturamentoItemvlcompra: TFMTBCDField;
    cdsFaturamentoItemvlvenda: TFMTBCDField;
    cdsFaturamentoItemCalcVllucro: TFloatField;
    cdsFaturamentoItemCalcPerclucro: TFloatField;
    sqlFaturamentoFamilia: TSQLDataSet;
    dspFaturamentoFamilia: TDataSetProvider;
    cdsFaturamentoFamilia: TClientDataSet;
    cdsFaturamentoFamiliafapcod: TIntegerField;
    cdsFaturamentoFamiliafapdescr: TStringField;
    cdsFaturamentoFamiliaqtdevendida: TFMTBCDField;
    cdsFaturamentoFamiliavltotcompra: TFMTBCDField;
    cdsFaturamentoFamiliavltotvenda: TFMTBCDField;
    cdsFaturamentoFamiliaCalcVllucro: TFloatField;
    cdsFaturamentoFamiliaCalcPerclucro: TFloatField;
    procedure cdsFaturamentoItemCalcFields(DataSet: TDataSet);
    procedure cdsFaturamentoFamiliaCalcFields(DataSet: TDataSet);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure ConfigurarCabecalho(ASubTitulo: String);
  end;

var
  dmDadosRelat: TdmDadosRelat;

implementation

{%CLASSGROUP 'System.Classes.TPersistent'}

uses uConexao;

{$R *.dfm}

{ TdmDadosRelat }

procedure TdmDadosRelat.cdsFaturamentoFamiliaCalcFields(DataSet: TDataSet);
begin
  // Valor de lucro
  cdsFaturamentoFamiliaCalcVllucro.Value := cdsFaturamentoFamiliavltotvenda.AsFloat - cdsFaturamentoFamiliavltotcompra.AsFloat;

  // Percentual de Lucro
  cdsFaturamentoFamiliaCalcPerclucro.Value := (cdsFaturamentoFamiliaCalcVllucro.AsFloat / cdsFaturamentoFamiliavltotcompra.AsFloat) * 100;
end;

procedure TdmDadosRelat.cdsFaturamentoItemCalcFields(DataSet: TDataSet);
begin
  // Valor de lucro
  cdsFaturamentoItemCalcVllucro.Value := cdsFaturamentoItemvlvenda.AsFloat - cdsFaturamentoItemvlcompra.AsFloat;

  // Percentual de Lucro
  cdsFaturamentoItemCalcPerclucro.Value := (cdsFaturamentoItemCalcVllucro.AsFloat / cdsFaturamentoItemvlcompra.AsFloat) * 100;
end;

procedure TdmDadosRelat.ConfigurarCabecalho(ASubTitulo: String);
begin
  cdsCabecalho.Close;
  cdsCabecalho.CreateDataSet;
  cdsCabecalho.Open;

  cdsCabecalho.AppendRecord([ASubTitulo]);
end;

end.
